package ar.com.uade.administradorsiembra.vista;

import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

import ar.com.uade.administradorsiembra.controladores.PlanificarSiembraController;
import ar.com.uade.administradorsiembra.modelo.Lote;
import ar.com.uade.administradorsiembra.modelo.Sembradora;
import ar.com.uade.administradorsiembra.modelo.Siembra;
import ar.com.uade.administradorsiembra.modelo.exceptions.NoHayLotesParaSembrarException;
import ar.com.uade.administradorsiembra.views.LoteView;
import ar.com.uade.administradorsiembra.views.MineralView;

/**
 * This code was edited or generated using CloudGarden's Jigloo SWT/Swing GUI
 * Builder, which is free for non-commercial use. If Jigloo is being used
 * commercially (ie, by a corporation, company or business for any purpose
 * whatever) then you should purchase a license for each developer using Jigloo.
 * Please visit www.cloudgarden.com for details. Use of Jigloo implies
 * acceptance of these licensing terms. A COMMERCIAL LICENSE HAS NOT BEEN
 * PURCHASED FOR THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED LEGALLY FOR
 * ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
public class PlanificarSiembraGUI extends javax.swing.JFrame {

	{
		// Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager
					.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private JButton jCerrarButton;
	private JLabel jMensajeLabel;
	private JTextField jTextoHasta;
	private JLabel jLabelHasta;
	private JTextField jTextDesde;
	private JLabel jLabel1;
	private JButton jPlanificarButton;
	private JTable jResultadosTable;
	private JScrollPane jResultadosScrollPane;
	private PlanificarSiembraController controller;
	private List<LoteView> lotes;
	private List<MineralView> minerales;
	private Sembradora sembradora;

	/**
	 * Auto-generated main method to display this JFrame
	 */
	public static void iniciar() {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				PlanificarSiembraGUI inst = new PlanificarSiembraGUI();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}

	public PlanificarSiembraGUI() {
		super();
		initGUI();
	}

	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			this.controller = PlanificarSiembraController.getInstancia();
			this.setTitle("Agregar Cereal");
			getContentPane().setLayout(null);
			{
				jCerrarButton = new JButton();
				getContentPane().add(jCerrarButton);
				jCerrarButton.setText("Cerrar");
				jCerrarButton.setBounds(383, 291, 100, 23);
				jCerrarButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						System.out
								.println("jCerrarButton.actionPerformed, event="
										+ evt);
						// TODO add your code for jCerrarButton.actionPerformed
						dispose();
					}
				});
			}
			{
				jMensajeLabel = new JLabel();
				getContentPane().add(jMensajeLabel);
				jMensajeLabel
						.setText("Han sido sembrados los siguientes lotes:");
				jMensajeLabel.setBounds(10, 62, 193, 14);
			}
			{
				jResultadosScrollPane = new JScrollPane();
				getContentPane().add(jResultadosScrollPane);
				jResultadosScrollPane.setBounds(10, 87, 485, 188);
				{
					TableModel jResultadosTableModel = new DefaultTableModel(
							null, new String[] { "Lote", "Cereal",
									"Cantidad (Tn)" });
					jResultadosTable = new JTable();
					GridBagLayout jResultadosTableLayout = new GridBagLayout();
					// jResultadosTableLayout.setHGap(5);
					// jResultadosTableLayout.setVGap(5);
					jResultadosScrollPane.setViewportView(jResultadosTable);
					jResultadosTable.setModel(jResultadosTableModel);
					jResultadosTable.setLayout(jResultadosTableLayout);
				}
			}
			{
				jPlanificarButton = new JButton();
				getContentPane().add(jPlanificarButton);
				jPlanificarButton.setText("Planificar");
				jPlanificarButton.setBounds(291, 291, 75, 23);
				jPlanificarButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jPlanificarButtonActionPerformed(evt);
					}
				});
			}
			{
				jLabel1 = new JLabel();
				getContentPane().add(jLabel1);
				jLabel1.setText("Fecha de Siembra desde:");
				jLabel1.setBounds(10, 24, 121, 14);
			}
			{
				jTextDesde = new JTextField();
				getContentPane().add(jTextDesde);
				jTextDesde.setBounds(149, 21, 80, 20);
			}
			{
				jLabelHasta = new JLabel();
				getContentPane().add(jLabelHasta);
				jLabelHasta.setText("hasta");
				jLabelHasta.setBounds(249, 24, 27, 14);
			}
			{
				jTextoHasta = new JTextField();
				getContentPane().add(jTextoHasta);
				jTextoHasta.setBounds(291, 21, 87, 20);
			}
			pack();
			this.setSize(521, 379);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void jPlanificarButtonActionPerformed(ActionEvent evt) {
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		DefaultTableModel tabModel = new DefaultTableModel();  
		
	    tabModel.addColumn("Lote");  
	    tabModel.addColumn("Cereal"); 
	    tabModel.addColumn("Cantidad (Tn)"); 
	    
		try {
			Sembradora sembradora = this.controller.planificarSiembra(
					dateFormat.parse(this.jTextDesde.getText()),
					dateFormat.parse(this.jTextoHasta.getText()));
			List<Siembra> resultados = sembradora.getTodasSiembras();
			/*String[][] datos = new String[resultados.size()][3];
			String[] cabecera = new String[] { "Lote", "Cereal",
					"Cantidad (Tn)" };*/
			Integer i = 0;
			for (Siembra siembra : resultados) {
				for (Lote lote : siembra.getLotesSembrados()) {
					Object[] rowData = {lote.getNumeroLote().toString(), siembra.getCereal().getDescripcion(), lote.getCantidadSembrada().toString()};  
					
					tabModel.insertRow(i, rowData);
					
					/*datos[i][0] = lote.getNumeroLote().toString();
					datos[i][1] = siembra.getCereal().getDescripcion();
					datos[i][2] = lote.getCantidadSembrada().toString();*/
					
					i++;
				}

			}
		    
			this.jResultadosTable.setModel(tabModel); //new JTable(datos, cabecera);
			this.jResultadosTable.setVisible(true);

		} catch (NoHayLotesParaSembrarException e) {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog(new JLabel(), e.getMessage());
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			JOptionPane.showMessageDialog(new JLabel(), e.getMessage());
		}

	}

}
